package com.aterrizar.ui;

import java.awt.Color;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.layout.HorizontalLayout;
import org.uqbar.arena.layout.VerticalLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Label;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.SimpleWindow;
import org.uqbar.arena.windows.WindowOwner;

import com.aterrizar.asiento.Asiento;
import com.aterrizar.usuario.Usuario;

/**
 * Ventana de búsqueda de celulares.
 * 
 * @see BuscadorAsiento el modelo subyacente.
 * 
 * @author ?
 */
public abstract class PasajesWindow extends SimpleWindow<BuscadorAsiento> {

	private static final long serialVersionUID = 5620690576841847324L;
	protected Usuario usuario = null;

	public PasajesWindow(WindowOwner parent, Usuario usuario) {
		super(parent, new BuscadorAsiento());
		this.usuario = usuario;
		setTitle("Aterrizar.com");
		search();
	}
	
	protected abstract void search();

	@Override
	public void createMainTemplate(Panel mainPanel) {
		Panel searchFormPanel = new Panel(mainPanel);
		searchFormPanel.setLayout(new VerticalLayout());

		new Label(searchFormPanel).setText(getLabel()).setForeground(
				Color.BLACK);

		Panel buttonsPanel = new Panel(mainPanel);
		buttonsPanel.setLayout(new HorizontalLayout());
		this.createResultsGrid(mainPanel);
		new Button(buttonsPanel).setCaption("Cerrar").onClick(
				new MessageSend(this, "close"));
	}

	protected void createResultsGrid(Panel mainPanel) {
		Table<Asiento> table = new Table<Asiento>(mainPanel, Asiento.class);
		table.setHeigth(200);
		table.setWidth(450);
		table.bindContentsToProperty(Variables.RESULTS);
		this.describeResultsGrid(table);
	}

	protected void describeResultsGrid(Table<Asiento> table) {
		new Column<Asiento>(table).setTitle("Salida").setFixedSize(150)
				.bindContentsToProperty("fechaSalida");
		new Column<Asiento>(table).setTitle("Aerolinea").setFixedSize(150)
				.bindContentsToProperty("nombreAerolinea");
		new Column<Asiento>(table).setTitle("Vuelo").setFixedSize(150)
				.bindContentsToProperty("vuelo");
		new Column<Asiento>(table).setTitle("Asiento").setFixedSize(150)
				.bindContentsToProperty("asiento");
		new Column<Asiento>(table).setTitle("Precio").setFixedSize(150)
				.bindContentsToProperty("precio");

	}

	@Override
	protected void addActions(Panel actionsPanel) {
		// TODO Auto-generated method stub
		
	}

	@Override
	protected void createFormPanel(Panel mainPanel) {
		// TODO Auto-generated method stub
		
	}
	
	protected abstract String getLabel();

}
